package com.example.updownload_file.utils;

import java.io.UnsupportedEncodingException;

/**
 * Created by tanglp on 2023/6/26 20:36
 */
public class StringUtils {

    /**
     * 以某个特定字符填充字符串到指定长度
     *
     * @param s
     *            要进行填充的字符串
     * @param fillchar
     *            填充字符
     * @param len
     *            要填充到的长度
     * @param isRightFill
     *            填充方向: <code>true</code>向右填充 ;<code>false</code> 向左填充.
     * @return 产生的字符串
     */
    public static String fillString(String s, char fillchar, int len, boolean isRightFill) {
        if (s == null || s.length() >= len) {
            return s;
        }
        int la = len - s.length();
        StringBuffer bf = new StringBuffer(len);
        if (isRightFill) {
            bf.append(s);
        }
        for (int i = 0; i < la; i++) {
            bf.append(fillchar);
        }
        if (!isRightFill) {
            bf.append(s);
        }
        return bf.toString();
    }

    /**
     * 	 * 以某个特定字符串填充字符串到指定字节长度
     *
     * @param s
     *            要进行填充的字符串
     * @param fillchar
     *            填充字符
     * @param len
     *            要填充到的字节长度
     * @param isRightFill
     *            填充方向, <code>true</code>向右填充; <code>false</code> 向左填充.
     * @return 产生的字符串
     */
    public static String fillStringByByte(String s, String fillchar, int len, boolean isRightFill) {
        if (s == null) {
            return s;
        }
        int slen = s.getBytes().length;
        if (slen >= len) {
            return s;
        }
        int charlen = fillchar.getBytes().length;
        int k = (len - slen) / charlen;
        StringBuffer bf = new StringBuffer();
        if (isRightFill) {
            bf.append(s);
        }
        for (int i = 0; i < k; i++) {
            bf.append(fillchar);
        }
        if (!isRightFill) {
            bf.append(s);
        }
        return bf.toString();
    }


    /**
     * 以某个特定字符填充字符串到指定字节长度
     *
     * @param s
     *            要进行填充的字符串
     * @param fillchar
     *            填充字符
     * @param len
     *            要填充到的字节长度
     * @param isRightFill
     *            填充方向, <code>true</code>向右填充; <code>false</code> 向左填充.
     * @return 产生的字符串
     */
    public static String fillStringByByte(String s, char fillchar, int len,
                                          boolean isRightFill) throws UnsupportedEncodingException {
        if (s == null) {
            return s;
        }
        int slen = s.getBytes("GB2312").length;
        if (slen >= len) {
            return s;
        }
        String charstr = String.valueOf(fillchar);
        int charlen = charstr.getBytes().length;
        int k = (len - slen) / charlen;
        StringBuffer bf = new StringBuffer();
        if (isRightFill) {
            bf.append(s);
        }
        for (int i = 0; i < k; i++) {
            bf.append(fillchar);
        }
        if (!isRightFill) {
            bf.append(s);
        }
        return bf.toString();
    }
}
